Windows Server 2012 R2 のリモートデスクトップ接続で正規の証明書を割り当てる
こんにちは、ももんが大好きの小山です。みなさんいかがお過ごしでしょうか?
きょうは、リモートデスクトップサービスを実行していない Windows Server インスタンスへ正規の SSL 証明書をインストールし、より安全な RDP 接続を実現する方法についてご紹介します。
嬉しいこと
- 接続しているインスタンスが本当に自分のものなのかわかるので、安心してパスワードを入力できる
- 接続の際に不正な証明書の警告が表示されないので、素早くデスクトップを開くことができる
嬉しくないこと
- 常に証明書の有効期限を気にしなければならない
証明書のインポート
さっそく証明書をインポートしましょう。用意した.pfx、もしくは.p12の証明書ファイル (秘密鍵入りの Personal Information Exchange-PKCS #12) をダブルクリックします。
ヒント: 今回用意した証明書と秘密鍵は certificate.pem + private.key のようにばらばらだったため、あらかじめ OpenSSL ツールでパスワード付きの PFX ファイルを作成しました。
$ openssl pkcs12 -export -out Certificate.pfx -inkey private.key -in certificate.pem
「証明書のインポートウィザード」が表示されます。保存場所としてローカルコンピューターを選択し、次へで進みましょう。
「インポートする証明書ファイル」ページでは、ダブルクリックした証明書ファイルが選択されます。次へで進みます。
「秘密キーの保護」ページでは、証明書ファイルに設定されたパスワードを入力します。すべての拡張プロパティを含めるが選択されていることを確かめたら、次へで進みましょう。
「証明書ストア」のページが表示されます。証明書の種類に基づいて、自動的に証明書ストアを選択するが選択されていることを確かめて、次へで進みます。
完了、OKの順に選択したら終了です。
証明書の拇印を取得する
インポートした証明書を特定するため、証明書の拇印が必要です。コンピューターアカウントの証明書スナップインを開いたら、「個人」証明書ストアを開きましょう。インポートした証明書が表示されていますから、右クリックでプロパティを開きます。
「詳細」タブで SHA1 の拇印が確認できます。これをメモ帳へ貼り付けて、2文字ごとに挿入されたスペースを取り除いておきましょう。すべてのウィンドウを閉じて、次のステップへ進みます。
証明書の割り当て
証明書の割り当てを設定するため、PowerShellを開きましょう。以下のコマンドレットを実行して現在の設定を確認できます。
Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'"
以下のようなおまじないを打ったら...
$path = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").__path
以下のコマンドレットで証明書を割り当てます。
Set-WmiInstance -Path $path -argument @{SSLCertificateSHA1Hash="ここに証明書の拇印を入力します"}
できました!
変更は再起動なしで適用されます。サインインしなおして、証明書の警告が表示されないことを確かめましょう。
おわりに
いかがでしたか? Windows Server 2012 R2 では標準リモートデスクトップ接続のための GUI を通じた証明書割り当てがサポートされなくなったため、戸惑った方もいらっしゃるんではないでしょうか。私もなかなか設定に成功せず、The certificate could not be verifiedのメッセージを見るたびに後ろめたい気持ちになっていました。そんな中で以下のページを見つけ、無事に設定することができました! みなさんも正規の証明書を活用して、安心・快適な Windows ライフを満喫しましょう。